package com.chenfan.mcn.model;

import java.math.BigDecimal;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.*;

import java.util.Date;

import com.chenfan.mcn.extension.log.FieldDesc;
import com.chenfan.mcn.enums.IntentionOrderStatusEnum;
import com.chenfan.mcn.component.dict.BrandCodeTranslator;
import com.chenfan.mcn.component.dict.CustomerIdTranslator;
import com.chenfan.mcn.component.dict.StarPlatformInfoIdTranslator;
import com.chenfan.mcn.extension.log.FieldTypeEnum;
import com.chenfan.mcn.model.base.BaseOwnerEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * 意向单
 * </p>
 *
 * @author wulg
 * @since 2022-10-28
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("doc_intention_order")
public class DocIntentionOrder extends BaseOwnerEntity {

    /**
     * 意向单号
     */
    @TableField("intention_code")
    private String intentionCode;

    /**
     * 关联的收入合同id
     */
    @TableField("income_contract_id")
    private Long incomeContractId;

    /**
     * 关联的收入合同单号
     */
    @TableField("income_contract_code")
    private String incomeContractCode;

    /**
     * 关联的执行单id
     */
    @TableField("excution_order_id")
    private Long excutionOrderId;

    /**
     * 关联的执行单编号
     */
    @TableField("excution_order_code")
    private String excutionOrderCode;

    /**
     * 单据状态：0_草稿、 1_待接单、2_已拒单、3_待锁档、4_待AE接收、 5_执行中、6_已完结、7_已作废
     */
    @FieldDesc(value = "单据状态", translator = IntentionOrderStatusEnum.class)
    @TableField("status")
    private Integer status;

    /**
     * 客户id
     */
    @FieldDesc(value = "客户", translator = CustomerIdTranslator.class)
    @TableField("customer_id")
    private Long customerId;

    /**
     * 红人id
     */
    @TableField("star_id")
    private Long starId;

    /**
     * 红人平台id（发布平台）
     */
    @FieldDesc(value = "红人/发布平台", translator = StarPlatformInfoIdTranslator.class)
    @TableField("star_platform_info_id")
    private Long starPlatformInfoId;

    /**
     * 产品名称
     */
    @TableField("product_name")
    @FieldDesc("产品名称")
    private String productName;

    /**
     * 品牌
     */
    @TableField("cooperate_brand")
    @FieldDesc(value = "品牌", translator = BrandCodeTranslator.class)
    private String cooperateBrand;

    /**
     * 发布形式（数据字典Publishing_platform二级字典）
     */
    @TableField("publish_form")
    private String publishForm;

    /**
     * 发布日期开始时间
     */
    @JSONField(format = "yyyy-MM-dd")
    @TableField(value = "publish_date")
    @FieldDesc(value = "发布日期开始时间", format = "yyyy-MM-dd")
    private Date publishDate;

    /**
     * 发布日期结束时间
     */
    @JSONField(format = "yyyy-MM-dd")
    @TableField(value = "publish_date_end")
    @FieldDesc(value = "发布日期结束时间", format = "yyyy-MM-dd")
    private Date publishDateEnd;

    /**
     * 是否平台下单：0否1是
     */
    @TableField("from_micro_task")
    @FieldDesc(value = "是否平台下单",replace = {"否_0","是_1"})
    private Integer fromMicroTask;

    /**
     * 是否挂车/橱窗/组件：0否1是
     */
    @TableField("have_link_command")
    @FieldDesc(value = "是否挂车/橱窗/组件",replace = {"否_0","是_1"})
    private Integer haveLinkCommand;

    /**
     * 内容实际报价（元）（原：本单金额）
     */
    @TableField("order_amount")
    @FieldDesc(value = "内容实际报价（元）")
    private BigDecimal orderAmount;

    /**
     * 实际执行金额
     */
    @TableField("actual_amount")
    private BigDecimal actualAmount;

    /**
     * 刊例原价（元）
     */
    @TableField("card_rate_price")
    @FieldDesc(value = "刊例原价（元）")
    private BigDecimal cardRatePrice;

    /**
     * 其他加价收入（元）
     */
    @TableField("other_income_amount")
    @FieldDesc(value = "其他加价收入（元）")
    private BigDecimal otherIncomeAmount;

    /**
     * 其他加价收入说明
     */
    @TableField("other_income_remark")
    @FieldDesc(value = "其他加价收入说明")
    private String otherIncomeRemark;

    /**
     * 平台手续费/微任务金额（元）
     */
    @TableField("platform_fee_amount")
    @FieldDesc(value = "平台手续费/微任务金额（元）")
    private BigDecimal platformFeeAmount;

    /**
     * 机酒差旅补贴（元）
     */
    @TableField("special_income_amount")
    @FieldDesc(value = "机酒差旅补贴（元）")
    private BigDecimal specialIncomeAmount;

    /**
     * 机酒差旅补贴说明
     */
    @TableField("special_income_remark")
    @FieldDesc(value = "机酒差旅补贴说明")
    private String specialIncomeRemark;

    /**
     * 其他补贴性收入（元）
     */
    @TableField("subsidy_income_amount")
    @FieldDesc(value = "其他补贴性收入（元）")
    private BigDecimal subsidyIncomeAmount;

    /**
     * 其他补贴性收入说明
     */
    @TableField("subsidy_income_remark")
    @FieldDesc(value = "其他补贴性收入说明")
    private String subsidyIncomeRemark;

    /**
     * 总收入（元）-自动计算
     */
    @TableField("total_income_amount")
    @FieldDesc(value = "总收入（元）")
    private BigDecimal totalIncomeAmount;

    /**
     * 内容报价返点比例（%）
     */
    @TableField("rebate")
    @FieldDesc(value = "内容报价返点比例（%）")
    private BigDecimal rebate;

    /**
     * 内容报价返点金额（元）
     */
    @TableField("rebate_amount")
    @FieldDesc(value = "内容报价返点金额（元）")
    private BigDecimal rebateAmount;

    /**
     * 本单实际优惠比例（%）
     */
    @TableField("actual_discount_ratio")
    @FieldDesc(value = "本单实际优惠比例（%）")
    private BigDecimal actualDiscountRatio;

    /**
     * 执行人id
     */
    @TableField("excutor_id")
    private Long excutorId;

    /**
     * 执行人名称
     */
    @TableField("excutor_name")
    @FieldDesc(value = "执行人")
    private String excutorName;

    /**
     * 红人经纪人id
     */
    @TableField("star_agent_id")
    private Long starAgentId;

    /**
     * 红人经纪人名称
     */
    @TableField("star_agent_name")
    @FieldDesc(value = "经纪人")
    private String starAgentName;

    /**
     * 备注
     */
    @TableField("remark")
    @FieldDesc(value = "备注")
    private String remark;

    /**
     * 经纪人受理备注（拒接/接单）
     */
    @FieldDesc(value = "(接单/拒接)备注")
    @TableField("accept_remark")
    private String acceptRemark;

    /**
     * 是否直播合作广告：0否、1是
     */
    @FieldDesc(value = "是否直播合作广告", replace = {"否_0","是_1"})
    @TableField("is_live_ad")
    private Integer isLiveAd;

    /**
     * 是否有折扣返点审批：0否、1是
     */
    @FieldDesc(value = "是否有折扣返点审批", replace = {"否_0","是_1"})
    @TableField("have_discount_approval")
    private Integer haveDiscountApproval;

    /**
     * 折扣返点审批图片
     */
    @FieldDesc(value = "折扣返点审批图片", fieldType = FieldTypeEnum.IMAGE)
    @TableField("discount_screenshot")
    private String discountScreenshot;

    /**
     * 执行时间
     */
    @FieldDesc("执行时间")
    @TableField("execute_time")
    private Date executeTime;

}
